/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servlets;

import DAO.ArchivosDAO;
import Entidades.Archivos;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

/**
 *
 * @author The_Punisher_Khan
 */

@WebServlet(name="UploadServlet", urlPatterns={"/Process/upload"})
@MultipartConfig
public class UploadServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            // Primero accesa al arhivo subido por el cliente
            Part p1 = request.getPart("file");
            InputStream is = p1.getInputStream();

            // Lee el nombre del archivo
            Part p2  = request.getPart("photoname");
            Scanner s = new Scanner(p2.getInputStream());
            String correo = s.nextLine();
            System.setOut( new PrintStream(new File("D:\\Documents\\NetBeansProjects\\UploadAndSaveTest\\UploadAndSaveTest\\salida.txt")) );
            ArchivosDAO dao = ArchivosDAO.getSingleton();
            Date d = new Date();
            StringBuffer hola = new StringBuffer();
            Archivos ar = new Archivos();

            String name =d.toString().replace(' ', '_').replace(':', '-');
            ar.setNombre(name);
            ar.setCorreo(correo);
            
            boolean a=dao.create(ar, hola);
                if(!a){
                    System.out.println("FALLO: " + hola);
                }
            // Obtiene el nombre del archivo que se va a usar en el servidor
            String outputfile = this.getServletContext().getRealPath("\\Doc\\"+name);  // Aquí obtiene la ruta del servidor
            FileOutputStream os = new FileOutputStream (outputfile);

            // Escribe lo que haya en el archivo subido, en la ruta de despliegue de la aplicación
            int ch = is.read();
            while (ch != -1) {
                 os.write(ch);
                 ch = is.read();
            }
            
            os.close();
            out.println("<FONT FACE=\"Verdana\" SIZE=3 COLOR=black><h3>Archivo Subido!</h3><br>");
            out.println("<h3>cuando se termine de procesar el archivo se le informa con un correo!</h3><br>");
            out.println("<A href=\"inicio.jsp\"><h3>ATRAS</h3></A></FONT><br>");

        }
        catch(Exception ex) {
           out.println("Excepción -->" + ex.getMessage());
        }
        finally {
            out.close();
        }
    }
 }
